Skill

TestNG এর মধ্যে Parallel Execution

Java Technologies - টেস্টএনজি (TestNG)
199

Parallel Execution হল TestNG-র একটি গুরুত্বপূর্ণ ফিচার, যা একাধিক টেস্ট একসাথে চালানোর মাধ্যমে টেস্টিং প্রসেসকে দ্রুততর করে। এটি টেস্টিংয়ের সময় সাশ্রয় করে এবং উচ্চতর কর্মক্ষমতা নিশ্চিত করে।

TestNG ব্যবহার করে আপনি টেস্ট মেথড, ক্লাস, টেস্ট গ্রুপ বা স্যুট লেভেলে প্যারালাল এক্সিকিউশন কনফিগার করতে পারেন।


Parallel Execution কেন প্রয়োজন?

১. সময় সাশ্রয়
একাধিক টেস্ট একসাথে চালানো হলে টেস্টিংয়ের সময় অনেকটাই কমে যায়।

২. বড় প্রজেক্টের কার্যক্ষমতা বৃদ্ধি
বড় প্রজেক্টে হাজার হাজার টেস্ট কেস থাকলে প্যারালাল এক্সিকিউশন টেস্টিং সহজতর করে।

৩. রিসোর্সের সর্বোচ্চ ব্যবহার
প্যারালাল এক্সিকিউশন CPU বা ক্লাউড সার্ভারের থ্রেডগুলোর সর্বোচ্চ ব্যবহার নিশ্চিত করে।


TestNG-তে Parallel Execution কনফিগার করার পদ্ধতি

TestNG-তে Parallel Execution কনফিগার করতে testng.xml ফাইল ব্যবহার করা হয়।

Parallel Execution-এর ধরন:

  • methods: মেথড লেভেলে প্যারালাল টেস্ট চালায়।
  • classes: ক্লাস লেভেলে প্যারালাল টেস্ট চালায়।
  • tests: বিভিন্ন টেস্ট স্যুট লেভেলে প্যারালাল টেস্ট চালায়।

উদাহরণ: মেথড লেভেলে Parallel Execution

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Parallel Suite" parallel="methods" thread-count="3">
    <test name="Parallel Test">
        <classes>
            <class name="com.example.tests.TestClass1" />
        </classes>
    </test>
</suite>

ব্যাখ্যা:

  • parallel="methods": মেথড লেভেলে প্যারালাল এক্সিকিউশন নিশ্চিত করে।
  • thread-count="3": তিনটি থ্রেড ব্যবহৃত হবে।

উদাহরণ: ক্লাস লেভেলে Parallel Execution

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Parallel Suite" parallel="classes" thread-count="2">
    <test name="Parallel Test">
        <classes>
            <class name="com.example.tests.TestClass1" />
            <class name="com.example.tests.TestClass2" />
        </classes>
    </test>
</suite>

ব্যাখ্যা:

  • parallel="classes": একাধিক ক্লাস প্যারালাল চালানো হবে।
  • thread-count="2": দুটি থ্রেড ব্যবহার করা হবে।

উদাহরণ: টেস্ট লেভেলে Parallel Execution

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Parallel Suite" parallel="tests" thread-count="3">
    <test name="Test1">
        <classes>
            <class name="com.example.tests.TestClass1" />
        </classes>
    </test>
    <test name="Test2">
        <classes>
            <class name="com.example.tests.TestClass2" />
        </classes>
    </test>
</suite>

ব্যাখ্যা:

  • parallel="tests": পৃথক টেস্ট স্যুট প্যারালাল চালানো হবে।
  • thread-count="3": তিনটি থ্রেড ব্যবহৃত হবে।

কোড উদাহরণ: Parallel Execution-এর জন্য একটি ক্লাস

import org.testng.annotations.Test;

public class TestClass1 {

    @Test
    public void testMethod1() {
        System.out.println("Executing Test Method 1 on Thread: " + Thread.currentThread().getId());
    }

    @Test
    public void testMethod2() {
        System.out.println("Executing Test Method 2 on Thread: " + Thread.currentThread().getId());
    }

    @Test
    public void testMethod3() {
        System.out.println("Executing Test Method 3 on Thread: " + Thread.currentThread().getId());
    }
}

উপরের কোডের মেথডগুলো প্যারালাল চালালে প্রতিটি মেথড ভিন্ন থ্রেডে এক্সিকিউট হবে।


Parallel Execution-এ কিছু গুরুত্বপূর্ণ বিষয়

১. Thread-Safety নিশ্চিত করুন
প্যারালাল এক্সিকিউশনে শেয়ারড রিসোর্স ব্যবহারের ক্ষেত্রে সতর্ক থাকুন। প্রতিটি থ্রেডের জন্য পৃথক রিসোর্স বরাদ্দ দিন।

২. টেস্ট ডেটা আলাদা রাখুন
প্যারালাল টেস্টিংয়ের সময় ডেটা মিশ্রিত হওয়া এড়াতে আলাদা ডেটা ব্যবহার করুন।

৩. সঠিক Thread Count নির্ধারণ করুন
আপনার সিস্টেমের সক্ষমতা অনুযায়ী thread-count সেট করুন।


সারাংশ

Parallel Execution টেস্টিংকে আরও দ্রুত এবং কার্যকর করে তোলে। এটি বিশেষত বড় প্রজেক্ট এবং CI/CD সিস্টেমে টেস্টিং সময় কমানোর জন্য অত্যন্ত গুরুত্বপূর্ণ। সঠিকভাবে কনফিগার করে ব্যবহার করলে TestNG-র এই ফিচার টেস্টিংয়ের দক্ষতা বাড়ায়।

Content added By

Parallel Execution কি এবং এর প্রয়োজনীয়তা

211

Parallel Execution টেস্টএনজি (TestNG)-এর একটি গুরুত্বপূর্ণ ফিচার, যা একাধিক টেস্ট কেস বা টেস্ট ক্লাসকে একই সঙ্গে একাধিক থ্রেডে চালানোর সুবিধা প্রদান করে। এটি মূলত টেস্টিং কার্যক্রমকে দ্রুততর করার জন্য ব্যবহৃত হয় এবং বড় প্রজেক্টের ক্ষেত্রে টেস্ট এক্সিকিউশন টাইম কমিয়ে আনে।


Parallel Execution কি?

Parallel Execution হলো একই সময়ে একাধিক টেস্ট কেস বা টেস্ট ক্লাস চালানোর প্রক্রিয়া। টেস্টএনজি এই কাজটি Threading প্রযুক্তি ব্যবহার করে সম্পন্ন করে।

টেস্টএনজি আপনাকে তিনটি উপায়ে প্যারালাল টেস্ট চালানোর সুযোগ দেয়:

  • Tests: একাধিক টেস্ট সেকশন প্যারালাল চালানো।
  • Classes: একাধিক ক্লাস প্যারালাল চালানো।
  • Methods: একাধিক মেথড প্যারালাল চালানো।

Parallel Execution এর প্রয়োজনীয়তা

১. টাইম সেভিং:
বড় আকারের টেস্ট স্যুট দ্রুত চালানোর জন্য।
উদাহরণস্বরূপ, যদি ১০০টি টেস্ট কেস থাকে, সেগুলো সিরিয়াল এক্সিকিউশনের পরিবর্তে প্যারালালভাবে চালালে সময় অনেক কমে যাবে।

২. উন্নত কার্যকারিতা:
প্যারালাল এক্সিকিউশনের মাধ্যমে হার্ডওয়্যার রিসোর্সগুলো (CPU, RAM) আরও কার্যকরভাবে ব্যবহার করা যায়।

৩. স্কেলিং:
বড় প্রজেক্টের ক্ষেত্রে একাধিক টেস্ট একসঙ্গে চালিয়ে প্রজেক্টের স্কেলেবিলিটি নিশ্চিত করা।

৪. ইন্টিগ্রেশন টেস্টিং সহজ করা:
প্যারালাল টেস্টিংয়ের মাধ্যমে সিস্টেমের বিভিন্ন অংশ একই সঙ্গে পরীক্ষা করা সম্ভব, যা ডিপেন্ডেন্সি কমায়।


TestNG-তে Parallel Execution কনফিগারেশন

Parallel Execution সেটআপ করতে TestNG XML ফাইল ব্যবহার করা হয়।

উদাহরণ: প্যারালাল ক্লাস এক্সিকিউশন

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="ParallelExecutionSuite" parallel="classes" thread-count="3">
    <test name="TestParallel">
        <classes>
            <class name="com.example.TestClass1"/>
            <class name="com.example.TestClass2"/>
            <class name="com.example.TestClass3"/>
        </classes>
    </test>
</suite>

কোড বিশ্লেষণ:

  • parallel="classes": একাধিক ক্লাস প্যারালাল চালানোর জন্য।
  • thread-count="3": একসঙ্গে চালানোর জন্য থ্রেডের সংখ্যা নির্ধারণ।

প্যারালাল মেথড এক্সিকিউশন

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="ParallelExecutionSuite" parallel="methods" thread-count="4">
    <test name="TestParallelMethods">
        <classes>
            <class name="com.example.TestMethodsExample"/>
        </classes>
    </test>
</suite>

কোড বিশ্লেষণ:

  • parallel="methods": একাধিক মেথড প্যারালাল চালানোর জন্য।
  • thread-count="4": একসঙ্গে চালানোর জন্য থ্রেড সংখ্যা নির্ধারণ।

Parallel Execution এর সুবিধা

  1. দ্রুত ফলাফল প্রাপ্তি:
    একাধিক টেস্ট একসঙ্গে চালানোর মাধ্যমে সময় সাশ্রয় করা যায়।
  2. ক্লাউড-বেসড টেস্টিং:
    প্যারালাল টেস্টিং ক্লাউডে টেস্ট এক্সিকিউশনকে আরও কার্যকর করে তোলে।
  3. ফাস্ট ফিডব্যাক:
    বড় প্রজেক্টে দ্রুত ফিডব্যাক প্রদান নিশ্চিত করা যায়।
  4. রিসোর্স অপ্টিমাইজেশন:
    মাল্টি-কোর প্রসেসরগুলোর ক্ষমতা পুরোপুরি ব্যবহার করা সম্ভব।

Parallel Execution এর সীমাবদ্ধতা

  1. ডেটা ডিপেন্ডেন্সি ইস্যু:
    টেস্ট কেসগুলো যদি একই ডেটার উপর নির্ভর করে, তবে প্যারালাল এক্সিকিউশনের সময় ডেটা ইনকনসিস্টেন্সি হতে পারে।
  2. কমপ্লেক্স কনফিগারেশন:
    প্যারালাল টেস্ট সেটআপের জন্য XML ফাইল কনফিগারেশন জটিল হতে পারে।
  3. রেস কন্ডিশন:
    থ্রেড ব্যবস্থাপনা সঠিক না হলে "Race Condition" সমস্যা হতে পারে।

সারাংশ

Parallel Execution টেস্টিং কার্যক্রমকে দ্রুত এবং আরও কার্যকর করে তোলে। এটি বড় আকারের প্রজেক্টে টেস্ট স্যুট পরিচালনার জন্য অপরিহার্য। তবে, এটি ব্যবহার করার আগে ডেটা ডিপেন্ডেন্সি এবং রেস কন্ডিশন এড়ানোর জন্য যথাযথ পরিকল্পনা করা প্রয়োজন।

Content added By

TestNG XML দিয়ে Parallel Execution কনফিগার করা

192

Parallel Execution টেস্টএনজির একটি গুরুত্বপূর্ণ ফিচার যা একই সময়ে একাধিক টেস্ট চালানোর অনুমতি দেয়। বড় এবং জটিল প্রজেক্টে যেখানে অনেকগুলো টেস্ট চালানো হয়, সেখানেই এই ফিচার টেস্টিং প্রক্রিয়াকে আরও দ্রুত এবং কার্যকর করতে সাহায্য করে। TestNG XML ফাইল ব্যবহার করে Parallel Execution খুব সহজেই কনফিগার করা যায়।


Parallel Execution কী এবং কেন ব্যবহার করা হয়?

Parallel Execution হলো একাধিক টেস্ট, ক্লাস, বা মেথড একই সময়ে আলাদাভাবে চালানোর পদ্ধতি। এটি ব্যবহারের কয়েকটি কারণ:

  • সময় সাশ্রয়: বড় প্রজেক্টের টেস্টিংয়ের সময় উল্লেখযোগ্যভাবে কমিয়ে আনে।
  • রিসোর্সের কার্যকর ব্যবহার: উপলব্ধ সিপিইউ কোরগুলো সর্বোচ্চ ব্যবহৃত হয়।
  • ত্বরান্বিত CI/CD প্রক্রিয়া: টেস্টিং দ্রুত হওয়ায় সফটওয়্যার ডেলিভারি চক্র ছোট হয়।

TestNG XML দিয়ে Parallel Execution কনফিগার করার উপায়

TestNG XML ফাইল ব্যবহার করে তিনভাবে Parallel Execution চালানো যায়:

  1. Tests: একাধিক টেস্ট প্যারালালে রান করানো।
  2. Classes: একই টেস্টের মধ্যে বিভিন্ন ক্লাস প্যারালালে চালানো।
  3. Methods: একই ক্লাসের বিভিন্ন মেথড প্যারালালে চালানো।

XML ফাইলের মূল কাঠামো

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="ParallelSuite" parallel="tests" thread-count="4">
    <test name="Test1">
        <classes>
            <class name="com.example.TestClass1" />
        </classes>
    </test>
    <test name="Test2">
        <classes>
            <class name="com.example.TestClass2" />
        </classes>
    </test>
</suite>

Parallel Execution এর জন্য XML কনফিগারেশন উদাহরণ

১. Parallel Execution on Tests

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="ParallelTestsSuite" parallel="tests" thread-count="2">
    <test name="Test1">
        <classes>
            <class name="com.example.TestClass1" />
        </classes>
    </test>
    <test name="Test2">
        <classes>
            <class name="com.example.TestClass2" />
        </classes>
    </test>
</suite>

ব্যাখ্যা:

  • parallel="tests": এটি টেস্ট লেভেলে প্যারালাল এক্সিকিউশন চালায়।
  • thread-count="2": দুটি থ্রেড ব্যবহার করে একসঙ্গে দুটি টেস্ট চালানো হবে।

২. Parallel Execution on Classes

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="ParallelClassesSuite" parallel="classes" thread-count="3">
    <test name="TestClassExecution">
        <classes>
            <class name="com.example.TestClass1" />
            <class name="com.example.TestClass2" />
            <class name="com.example.TestClass3" />
        </classes>
    </test>
</suite>

ব্যাখ্যা:

  • parallel="classes": একই টেস্টের মধ্যে তিনটি ক্লাস প্যারালালে চালানো হবে।
  • thread-count="3": তিনটি ক্লাস একসঙ্গে রান করতে তিনটি থ্রেড ব্যবহার হবে।

৩. Parallel Execution on Methods

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="ParallelMethodsSuite" parallel="methods" thread-count="5">
    <test name="TestMethodExecution">
        <classes>
            <class name="com.example.TestClass" />
        </classes>
    </test>
</suite>

ব্যাখ্যা:

  • parallel="methods": একই ক্লাসের মেথডগুলো প্যারালালে চালানো হবে।
  • thread-count="5": সর্বোচ্চ পাঁচটি মেথড একসঙ্গে চালানো যাবে।

Thread Count কনফিগারেশন

  • Thread Count হলো প্যারালাল এক্সিকিউশনের সময় কতটি থ্রেড ব্যবহার হবে তার সংখ্যা।
  • যদি thread-count নির্ধারণ না করা হয়, তাহলে ডিফল্টভাবে TestNG একক থ্রেডে সব টেস্ট চালায়।
  • এই সংখ্যা আপনার মেশিনের CPU Cores এর ওপর নির্ভর করে সঠিকভাবে নির্ধারণ করা উচিত।

একটি সম্পূর্ণ উদাহরণ

টেস্ট ক্লাস:

import org.testng.annotations.Test;

public class TestClass {
    
    @Test
    public void testMethod1() {
        System.out.println("Executing Method 1 - " + Thread.currentThread().getId());
    }
    
    @Test
    public void testMethod2() {
        System.out.println("Executing Method 2 - " + Thread.currentThread().getId());
    }
    
    @Test
    public void testMethod3() {
        System.out.println("Executing Method 3 - " + Thread.currentThread().getId());
    }
}

XML ফাইল:

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="ParallelExample" parallel="methods" thread-count="3">
    <test name="ParallelTest">
        <classes>
            <class name="com.example.TestClass" />
        </classes>
    </test>
</suite>

আউটপুট (কনসোল):

Executing Method 1 - 12
Executing Method 2 - 13
Executing Method 3 - 14

এখানে প্রতিটি মেথড আলাদা থ্রেডে চালিত হয়েছে।


Parallel Execution ব্যবহারের সতর্কতা

  • Shared Resources: প্যারালাল এক্সিকিউশনের সময় একাধিক থ্রেড একাধিক রিসোর্স অ্যাক্সেস করলে ডেডলক বা ডাটা ইনকনসিস্টেন্সি হতে পারে।
  • Thread Safety: মেথডগুলো থ্রেড সেফ কিনা তা নিশ্চিত করতে হবে।
  • Environment Compatibility: সব পরিবেশ প্যারালাল এক্সিকিউশন সমর্থন নাও করতে পারে।

সারাংশ

TestNG XML এর মাধ্যমে Parallel Execution কনফিগার করে টেস্টিং প্রক্রিয়া দ্রুততর করা যায়। Tests, Classes, এবং Methods লেভেলে প্যারালাল টেস্টিং চালিয়ে বড় এবং জটিল প্রজেক্টের টেস্টিং আরও কার্যকর করা সম্ভব। প্যারালাল এক্সিকিউশন সেটআপ করার সময় উপযুক্ত thread-count এবং রিসোর্স ম্যানেজমেন্টের দিকে বিশেষ নজর দিতে হবে।

Content added By

Thread Pool এবং Parallel Execution এর জন্য Best Practices

192

থ্রেড পুল এবং প্যারালাল এক্সিকিউশন কী?

থ্রেড পুল (Thread Pool) হলো টেস্ট এক্সিকিউশনের জন্য নির্ধারিত একাধিক থ্রেডের সমন্বয়। এটি টেস্ট কেসগুলোকে দ্রুততর করার জন্য ব্যবহার করা হয়।
প্যারালাল এক্সিকিউশন (Parallel Execution) হলো একাধিক টেস্ট কেস একযোগে (simultaneously) চালানোর প্রক্রিয়া। এটি সময় সাশ্রয়ী এবং বড় টেস্ট স্যুট চালানোর ক্ষেত্রে অত্যন্ত কার্যকর।


TestNG-তে প্যারালাল এক্সিকিউশন কনফিগারেশন

TestNG-তে প্যারালাল এক্সিকিউশন করতে XML ফাইল বা কোডের মাধ্যমে থ্রেড পুল সেট করা যায়।

উদাহরণ: XML কনফিগারেশন

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="ParallelExecution" parallel="methods" thread-count="3">
    <test name="Test1">
        <classes>
            <class name="com.example.TestClass" />
        </classes>
    </test>
</suite>

প্রধান প্যারামিটার:

  • parallel: প্যারালাল এক্সিকিউশনের ধরন নির্ধারণ করে। এটি হতে পারে:
    • methods: টেস্ট মেথডগুলো প্যারালালভাবে চলবে।
    • tests: টেস্ট ব্লকগুলো প্যারালালভাবে চলবে।
    • classes: ক্লাসগুলো প্যারালালভাবে চলবে।
  • thread-count: থ্রেড পুলে একসঙ্গে চলতে পারা টেস্ট মেথড বা ক্লাসের সংখ্যা নির্ধারণ করে।

প্যারালাল এক্সিকিউশনের জন্য Best Practices

থ্রেড পুল সাইজ সঠিকভাবে নির্ধারণ

  • ব্যবহারযোগ্য CPU কোর সংখ্যা: থ্রেড পুল সাইজ সাধারণত মেশিনের প্রাপ্য CPU কোর সংখ্যার সমান বা তার সামান্য কম রাখুন।
  • যদি আপনার মেশিনে ৪টি কোর থাকে, তবে thread-count="4" সেট করুন।

টেস্ট ইন্ডিপেনডেন্স নিশ্চিত করুন

  • প্রতিটি টেস্ট মেথড বা ক্লাস independent হতে হবে।
  • কোনো টেস্ট অন্য টেস্টের উপর নির্ভরশীল হলে প্যারালাল এক্সিকিউশন ব্যর্থ হতে পারে।
  • ডেটাবেস বা ফাইল সিস্টেম শেয়ার করলে deadlock বা ডেটা দুর্নীতির ঝুঁকি থাকে।

ডেটা সেটআপ এবং ক্লিনআপ সঠিকভাবে পরিচালনা

  • @BeforeMethod এবং @AfterMethod ব্যবহার করে প্রতিটি টেস্টের জন্য আলাদা ডেটা সেটআপ ও ক্লিনআপ নিশ্চিত করুন।
  • শেয়ারড রিসোর্সের ক্ষেত্রে যথাযথ সিঙ্ক্রোনাইজেশন করুন।

থ্রেড সেফটি নিশ্চিত করুন

  • টেস্ট কেসে ব্যবহার করা ক্লাস বা মেথড থ্রেড-সেফ কিনা তা যাচাই করুন।
  • ThreadLocal ব্যবহার করে শেয়ারড ডেটা পরিচালনা করতে পারেন।

লগিং কার্যকর করা

  • প্যারালাল এক্সিকিউশনে লগ ফাইলগুলো সঠিকভাবে ব্যবস্থাপনার জন্য প্রতিটি থ্রেডের জন্য আলাদা লগ ফাইল তৈরি করুন।
  • SLF4J বা Log4j এর মতো টুল ব্যবহার করতে পারেন।

প্যারালাল রি-ট্রাই সেটআপ করা

  • প্যারালাল এক্সিকিউশনের সময় ব্যর্থ হওয়া টেস্টগুলোর জন্য রি-ট্রাই মেকানিজম যুক্ত করুন।
  • TestNG-এর IAnnotationTransformer ইন্টারফেস ব্যবহার করে পুনরায় চালানোর পদ্ধতি সংজ্ঞায়িত করা যায়।

উদাহরণ: থ্রেড সেফ টেস্ট কোড

import org.testng.annotations.Test;

public class ParallelTest {
    
    private static ThreadLocal<Integer> threadLocal = new ThreadLocal<>();

    @Test
    public void testMethod1() {
        threadLocal.set(1);
        System.out.println("Thread ID: " + Thread.currentThread().getId() + " Value: " + threadLocal.get());
    }

    @Test
    public void testMethod2() {
        threadLocal.set(2);
        System.out.println("Thread ID: " + Thread.currentThread().getId() + " Value: " + threadLocal.get());
    }
}

উদ্দেশ্য: ThreadLocal ব্যবহার করে প্রতিটি থ্রেডের ডেটা আলাদা রাখা।


XML কনফিগারেশনের মাধ্যমে প্যারালাল এক্সিকিউশন

<suite name="ParallelSuite" parallel="classes" thread-count="5">
    <test name="ParallelTest">
        <classes>
            <class name="com.example.TestClass1" />
            <class name="com.example.TestClass2" />
        </classes>
    </test>
</suite>

সম্ভাব্য চ্যালেঞ্জ এবং সমাধান

Deadlock

  • একই রিসোর্স একাধিক থ্রেড ব্যবহার করলে deadlock হতে পারে।
    সমাধান: শেয়ারড রিসোর্সের জন্য সঠিক লক মেকানিজম ব্যবহার করুন।

ডেটা দুর্নীতি

  • একাধিক টেস্ট একসঙ্গে চালালে ডেটা ওভারল্যাপিং হতে পারে।
    সমাধান: প্রতিটি টেস্ট আলাদা ডেটা ব্যবহার করছে তা নিশ্চিত করুন।

পারফরম্যান্স সমস্যা

  • অনেক বেশি থ্রেড চালালে মেশিন স্লো হতে পারে।
    সমাধান: CPU এবং RAM এর উপর ভিত্তি করে থ্রেড সংখ্যা নির্ধারণ করুন।

সারাংশ

TestNG-এর থ্রেড পুল এবং প্যারালাল এক্সিকিউশন বড় টেস্ট স্যুট দ্রুত চালানোর জন্য কার্যকর। তবে থ্রেড সেফ কোড, ডেটা আইসোলেশন, এবং সঠিক কনফিগারেশন নিশ্চিত করা জরুরি। সঠিক Best Practices অনুসরণ করলে প্যারালাল টেস্টিং আরও কার্যকর এবং নির্ভরযোগ্য হবে।


Content added By

উদাহরণ সহ Parallel Execution

204

Parallel Execution টেস্টএনজি (TestNG)-এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা একাধিক টেস্ট বা টেস্ট ক্লাস একই সময়ে (প্যারালালভাবে) চালাতে সাহায্য করে। এটি টেস্টিংয়ের সময় বাঁচায় এবং বড় প্রোজেক্টে কার্যকরী হয়, বিশেষ করে যখন একাধিক ব্রাউজার বা পরিবেশে টেস্ট করতে হয়।


Parallel Execution কীভাবে কাজ করে?

Parallel Execution সাধারণত TestNG.xml ফাইলের মাধ্যমে কনফিগার করা হয়। আপনি নির্ধারণ করতে পারেন যে টেস্টগুলো ক্লাস, মেথড বা টেস্ট স্যুট লেভেলে প্যারালালভাবে চলবে।


Parallel Execution সেটআপ করার ধাপ

TestNG.xml ফাইলের কনফিগারেশন

TestNG.xml ফাইলে parallel অ্যাট্রিবিউট এবং thread-count ব্যবহার করে প্যারালাল টেস্ট কনফিগার করা যায়।


উদাহরণ: ক্লাস ভিত্তিক Parallel Execution

টেস্ট ক্লাস ১ (BrowserTest1.java)

import org.testng.annotations.Test;

public class BrowserTest1 {

    @Test
    public void testMethod1() {
        System.out.println("BrowserTest1 - Method1: " + Thread.currentThread().getId());
    }

    @Test
    public void testMethod2() {
        System.out.println("BrowserTest1 - Method2: " + Thread.currentThread().getId());
    }
}

টেস্ট ক্লাস ২ (BrowserTest2.java)

import org.testng.annotations.Test;

public class BrowserTest2 {

    @Test
    public void testMethod1() {
        System.out.println("BrowserTest2 - Method1: " + Thread.currentThread().getId());
    }

    @Test
    public void testMethod2() {
        System.out.println("BrowserTest2 - Method2: " + Thread.currentThread().getId());
    }
}

TestNG.xml ফাইল

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Parallel Test Suite" parallel="classes" thread-count="2">
    <test name="Test Suite 1">
        <classes>
            <class name="BrowserTest1"/>
            <class name="BrowserTest2"/>
        </classes>
    </test>
</suite>

আউটপুট

BrowserTest1 - Method1: 12
BrowserTest1 - Method2: 12
BrowserTest2 - Method1: 13
BrowserTest2 - Method2: 13

এখানে, দুটি টেস্ট ক্লাস আলাদা থ্রেডে চালানো হয়েছে। thread-count="2" নির্দেশ করে যে একসাথে দুইটি থ্রেড ব্যবহার করা হবে।


উদাহরণ: মেথড ভিত্তিক Parallel Execution

TestNG.xml ফাইল (মেথড ভিত্তিক Parallel Execution)

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Parallel Test Suite" parallel="methods" thread-count="3">
    <test name="Test Suite 2">
        <classes>
            <class name="BrowserTest1"/>
            <class name="BrowserTest2"/>
        </classes>
    </test>
</suite>

আউটপুট

BrowserTest1 - Method1: 12
BrowserTest1 - Method2: 13
BrowserTest2 - Method1: 14
BrowserTest2 - Method2: 15

এক্ষেত্রে প্রতিটি টেস্ট মেথড আলাদা থ্রেডে চালানো হয়েছে।


প্যারালাল এক্সিকিউশনের মূল বিষয়সমূহ

  1. Thread Count:
    thread-count নির্দেশ করে কতটি থ্রেডে টেস্ট চালানো হবে। ডিফল্ট মান ১।
  2. Parallel Modes:
    • methods: প্রতিটি টেস্ট মেথড আলাদা থ্রেডে চালানো হয়।
    • classes: প্রতিটি ক্লাস আলাদা থ্রেডে চালানো হয়।
    • tests: TestNG.xml-এ নির্দিষ্ট টেস্ট সেকশন আলাদা থ্রেডে চালানো হয়।
  3. সতর্কতা:
    • প্যারালাল এক্সিকিউশনে শেয়ারড ডেটা ব্যবহারে সতর্ক হতে হবে, কারণ এটি ডেটা রেস বা ইনকনসিস্টেন্সি তৈরি করতে পারে।
    • থ্রেড-সেফ কোড ব্যবহার করা গুরুত্বপূর্ণ।

প্যারালাল এক্সিকিউশনের সুবিধা

  • সময় বাঁচায়: একাধিক টেস্ট একই সময়ে চালানো হয়।
  • বড় প্রজেক্টে কার্যকর: দ্রুত বিভিন্ন টেস্ট কেস সম্পন্ন করা যায়।
  • বিভিন্ন ব্রাউজারে টেস্ট: একই টেস্ট একাধিক ব্রাউজারে প্যারালাল চালানো সহজ।

TestNG-এর প্যারালাল এক্সিকিউশন বড় আকারের টেস্ট স্যুট পরিচালনার জন্য একটি অত্যন্ত কার্যকর পদ্ধতি। এটি সঠিকভাবে কনফিগার করে ব্যবহার করলে টেস্টিং-এর সময় এবং রিসোর্স ব্যবহারে অনেক সুবিধা পাওয়া যায়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...